package pe.com.cotelasa.scp.dominio.common.helper;

import java.util.List;

import javax.faces.model.SelectItem;

import pe.com.cotelasa.scp.entidad.*;
import pe.com.cotelasa.seguridad.entidad.Rol;

public class SelectOneMenuHelper {

    public SelectOneMenuHelper() {
    }

    /**
	 * Formatea el objeto listaBanco al componente SelectItem[] para componentes de
	 * consulta de informacion  
	 * @return  El Array SelectItem[].
	 * @param List<Banco> lista de bancos
	 */
    public static SelectItem[] listaBancosConsulta(List<Banco> listaBanco) {
    	SelectItem[] lista = null;
        int i = 1;
        if (listaBanco != null && !listaBanco.isEmpty()) {
            lista = new SelectItem[listaBanco.size()+1];
            lista[0] = new SelectItem(-1,"Todos");
            for (Banco banco : listaBanco) {
                lista[i] = new SelectItem(banco.getId(), banco.getNombre());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
    
    public static SelectItem[] listaBancosConsulta2(List<Banco> listaBanco) {
    	SelectItem[] lista = null;
        int i = 0;
        if (listaBanco != null && !listaBanco.isEmpty()) {
            lista = new SelectItem[listaBanco.size()];
            //lista[0] = new SelectItem(-1,"Todos");
            for (Banco banco : listaBanco) {
                lista[i] = new SelectItem(banco.getId(), banco.getNombre());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
    
    /**
	 * Formatea el objeto listaBanco al componente SelectItem[] para componentes de
	 * formularios de informacion  
	 * @return  El Array SelectItem[].
	 * @param List<Banco> lista de bancos
	 */
    public static SelectItem[] listaBancosFormulario(List<Banco> listaBanco) {
        SelectItem[] lista = null;
        int i = 1;
        if (listaBanco != null) {
            lista = new SelectItem[listaBanco.size()+1];
        	lista[0] = new SelectItem(0,"Seleccione");
            for (Banco objBanco : listaBanco) {
                lista[i] = new SelectItem(objBanco.getId(), objBanco.getNombre());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
    
    
    /**
	 * Formatea el objeto listaCuentaBancaria al componente SelectItem[] para componentes de
	 * consulta de informacion  
	 * @return  El Array SelectItem[].
	 * @param List<CuentaBancaria> lista de CuentaBancarias
	 */
    public static SelectItem[] listaCuentaBancariaConsulta(List<CuentaBancaria> listaCuentaBancaria) {
        SelectItem[] lista = null;
        int i = 1;
        if (listaCuentaBancaria != null) {
            lista = new SelectItem[listaCuentaBancaria.size()+1];
            lista[0] = new SelectItem(-1,"Todos");
            for (CuentaBancaria cuentaBancaria : listaCuentaBancaria) {
                lista[i] = new SelectItem(cuentaBancaria.getId(),  cuentaBancaria.getNumeroCuenta() +" ( "+cuentaBancaria.getIdBanco().getNombre()+" )");
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
    
    /**
	 * Formatea el objeto listaCuentaBancaria al componente SelectItem[] para componentes de
	 * formularios de informacion  
	 * @return  El Array SelectItem[].
	 * @param List<CuentaBancaria> lista de CuentaBancarias
	 */
    public static SelectItem[] listaCuentaBancariaFormulario(List<CuentaBancaria> listaCuentaBancaria) {
        SelectItem[] lista = null;
        int i = 1;
        if (listaCuentaBancaria != null) {
            lista = new SelectItem[listaCuentaBancaria.size()+1];
        	lista[0] = new SelectItem(0,"Seleccione");
            for (CuentaBancaria cuentaBancaria : listaCuentaBancaria) {
                lista[i] = new SelectItem(cuentaBancaria.getId(), cuentaBancaria.getNumeroCuenta() +" ( "+cuentaBancaria.getIdBanco().getNombre()+" )");
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
    
    /**
	 * Formatea el objeto listaTipoMoneda al componente SelectItem[] para componentes de
	 * consulta de informacion  
	 * @return  El Array SelectItem[].
	 * @param List<CuentaBancaria> lista de CuentaBancarias
	 */
    public static SelectItem[] listaTipoMonedaConsulta(List<TipoMoneda> listaTipoMoneda) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaTipoMoneda != null && !listaTipoMoneda.isEmpty()) {
        	 lista = new SelectItem[listaTipoMoneda.size()+1];
             lista[0] = new SelectItem(-1,"Todos");
            for (TipoMoneda objTipoMoneda : listaTipoMoneda) {
                lista[i+1] = new SelectItem(objTipoMoneda.getId(), objTipoMoneda.getNombre());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
    
    public static SelectItem[] listaTipoMonedaConsulta2(List<TipoMoneda> listaTipoMoneda) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaTipoMoneda != null && !listaTipoMoneda.isEmpty()) {
        	 lista = new SelectItem[listaTipoMoneda.size()];
             //lista[0] = new SelectItem(-1,"Todos");
            for (TipoMoneda objTipoMoneda : listaTipoMoneda) {
                lista[i] = new SelectItem(objTipoMoneda.getId(), objTipoMoneda.getNombre());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
    
    
    
    public static SelectItem[] listaPaises(List<Pais> listaPais) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaPais != null) {
            lista = new SelectItem[listaPais.size()];
            for (Pais objPais : listaPais) {
                lista[i] = new SelectItem(objPais.getId(), objPais.getNombre());
                i++;
            }
        }
        return lista;
    }

    public static SelectItem[] listaDepartamento(List<Ubigeo> listaUbigeo) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaUbigeo != null) {
            lista = new SelectItem[listaUbigeo.size()];
            for (Ubigeo objUbigeo : listaUbigeo) {
                lista[i] = new SelectItem(objUbigeo.getId(), objUbigeo.getNombre());
                i++;
            }
        }
        return lista;
    }

    public static SelectItem[] listaBancos(List<Banco> listaBanco) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaBanco != null) {
            lista = new SelectItem[listaBanco.size()];
            for (Banco objBanco : listaBanco) {
                lista[i] = new SelectItem(objBanco.getId(), objBanco.getNombre());
                i++;
            }
        }
        return lista;
    }
    
    

    public static SelectItem[] listaTipoMonedas(List<TipoMoneda> listaTipoMoneda) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaTipoMoneda != null) {
            lista = new SelectItem[listaTipoMoneda.size()];
            for (TipoMoneda objTipoMoneda : listaTipoMoneda) {
                lista[i] = new SelectItem(objTipoMoneda.getId(), objTipoMoneda.getNombre());
                i++;
            }
        }
        return lista;
    }
    
    
    public static SelectItem[] listaCategoriaArticulo(List<CategoriaArticulo> listaCategoriaArticulo) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaCategoriaArticulo != null) {
            lista = new SelectItem[listaCategoriaArticulo.size()];
            for (CategoriaArticulo objCategoriaArticulo : listaCategoriaArticulo) {
                lista[i] = new SelectItem(objCategoriaArticulo.getId(), objCategoriaArticulo.getNombre());
                i++;
            }
        }
        return lista;
    }
    
    public static SelectItem[] listaProductosPrenda(List<Producto> listaProductoPrenda) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaProductoPrenda != null) {
            lista = new SelectItem[listaProductoPrenda.size()];
            for (Producto objProductoPrenda : listaProductoPrenda) {
                lista[i] = new SelectItem(objProductoPrenda.getId(), objProductoPrenda.getCodigoProducto());
                i++;
            }
        }
        return lista;
    }
    
    public static SelectItem[] listaProductosTela(List<Producto> listaProductoTela) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaProductoTela != null) {
            lista = new SelectItem[listaProductoTela.size()];
            for (Producto objProductoTela : listaProductoTela) {
                lista[i] = new SelectItem(objProductoTela.getId(), objProductoTela.getCodigoProducto());
                i++;
            }
        }
        return lista;
    }
    
    public static SelectItem[] listaTipoMoneda(List<TipoMoneda> listaTipoMoneda) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaTipoMoneda != null) {
            lista = new SelectItem[listaTipoMoneda.size()];
            for (TipoMoneda objTipoMoneda : listaTipoMoneda) {
                lista[i] = new SelectItem(objTipoMoneda.getId(), objTipoMoneda.getNombre());
                i++;
            }
        }
        return lista;
    }
    
    public static SelectItem[] listaTipoProveedor(List<ParametroDetalle> listaParametroDetalle) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaParametroDetalle != null) {
            lista = new SelectItem[listaParametroDetalle.size()];
            for (ParametroDetalle objParametroDetalle : listaParametroDetalle) {
                lista[i] = new SelectItem(objParametroDetalle.getValCadena(), objParametroDetalle.getDesParametroDet());
                i++;
            }
        }
        return lista;
    }
    
    public static SelectItem[] listaRoles(List<Rol> listaRoles) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaRoles != null) {
            lista = new SelectItem[listaRoles.size()];
            for (Rol objRol : listaRoles) {
                lista[i] = new SelectItem(objRol.getId(), objRol.getNombre());
                i++;
            }
        }
        return lista;
    }    
     
     public static SelectItem[] listaProveedor(List<Proveedor> listaProveedores) {
        SelectItem[] lista = null;
        int i = 1;
        if (listaProveedores != null) {
            lista = new SelectItem[listaProveedores.size()+1];
            lista[0] = new SelectItem(-1,"Seleccione");
            for (Proveedor proveedor : listaProveedores) {
                lista[i] = new SelectItem(proveedor.getId(), proveedor.getRazonSocial());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
     
     public static SelectItem[] listaClientes(List<Cliente> listaClientes) {
        SelectItem[] lista = null;
        int i = 1;
        if (listaClientes != null) {
            lista = new SelectItem[listaClientes.size()+1];
            lista[0] = new SelectItem(-1,"Seleccione");
            for (Cliente cliente : listaClientes) {
                lista[i] = new SelectItem(cliente.getId(), cliente.getRazonSocial());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
     
     public static SelectItem[] listaEmpresas(List<Empresa> listaEmpresas) {
        SelectItem[] lista = null;
        int i = 1;
        if (listaEmpresas != null && !listaEmpresas.isEmpty()) {
            lista = new SelectItem[listaEmpresas.size()+1];
            lista[0] = new SelectItem(-1,"Seleccione");
            for (Empresa empresa : listaEmpresas) {
                lista[i] = new SelectItem(empresa.getId(), empresa.getRazonSocial());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
     
     public static SelectItem[] listaEmpresasConsulta(List<Empresa> listaEmpresas) {
         SelectItem[] lista = null;
         int i = 1;
         if (listaEmpresas != null && !listaEmpresas.isEmpty()) {
             lista = new SelectItem[listaEmpresas.size()+1];
             lista[0] = new SelectItem(-1,"Todos");
             for (Empresa empresa : listaEmpresas) {
                 lista[i] = new SelectItem(empresa.getId(), empresa.getRazonSocial());
                 i++;
             }
         }else{
         	lista = new SelectItem[1];
         	lista[0] = new SelectItem(-2,"No existe informacion");
         }
         return lista;
     }
     
    public static SelectItem[] listaTipoCliente(List<ParametroDetalle> listaParametroDetalle) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaParametroDetalle != null) {
            lista = new SelectItem[listaParametroDetalle.size()];
            for (ParametroDetalle objParametroDetalle : listaParametroDetalle) {
                lista[i] = new SelectItem(objParametroDetalle.getValCadena(), objParametroDetalle.getDesParametroDet());
                i++;
            }
        }
        return lista;
    }
    
    public static SelectItem[] listaCuentaBancaria(List<CuentaBancaria> listaCuentaBancaria) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaCuentaBancaria != null) {
            lista = new SelectItem[listaCuentaBancaria.size()];
            for (CuentaBancaria cuentaBancaria : listaCuentaBancaria) {
                lista[i] = new SelectItem(cuentaBancaria.getId(), cuentaBancaria.getNumeroCuenta());
                i++;
            }
        }
        return lista;
    }
    
    
    
    public static SelectItem[] listaPais(List<Pais> listaPais) {
        SelectItem[] lista = null;
        int i = 0;
        if (listaPais != null) {
            lista = new SelectItem[listaPais.size()];
            for (Pais pais : listaPais) {
                lista[i] = new SelectItem(pais.getNombre(), pais.getNombre());
                i++;
            }
        }
        return lista;
    }

    public static SelectItem[] listaSedes(List<Sede> listaSedes) {
        SelectItem[] lista = null;
        int i = 1;
        if (listaSedes != null && !listaSedes.isEmpty()) {
        	lista = new SelectItem[listaSedes.size()+1];
            lista[0] = new SelectItem(-1,"Seleccione");
            for (Sede sede : listaSedes) {
                lista[i] = new SelectItem(sede.getId(), sede.getNombre());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    } 
    
    public static SelectItem[] listaSedesFormConsulta(List<Sede> listaSedes) {
        SelectItem[] lista = null;
        int i = 2;
        if (listaSedes != null && !listaSedes.isEmpty()) {
        	if(listaSedes.size()>1){
	        	lista = new SelectItem[listaSedes.size()+2];
	        	lista[0] = new SelectItem(0,"Seleccione");
	            lista[1] = new SelectItem(-1,"Todas");
        	}else{
        		lista = new SelectItem[listaSedes.size()];
        		i=0;
        	}    
            for (Sede sede : listaSedes) {
                lista[i] = new SelectItem(sede.getId(), sede.getNombre());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
    
    public static SelectItem[] listaEstadoCajaChicaFormConsulta(List<ParametroDetalle> listaParametroDetalle) {
        SelectItem[] lista = null;
        int i = 2;
        if (listaParametroDetalle != null) {
            if(listaParametroDetalle.size()>1){
	        	lista = new SelectItem[listaParametroDetalle.size()+2];
	        	lista[0] = new SelectItem(0,"Seleccione");
	            lista[1] = new SelectItem(-1,"Todas");
        	}else{
        		lista = new SelectItem[listaParametroDetalle.size()];
        		i=0;
        	}    
            for (ParametroDetalle objParametroDetalle : listaParametroDetalle) {
                lista[i] = new SelectItem(objParametroDetalle.getValCadena(), objParametroDetalle.getDesParametroDet());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
    
    public static SelectItem[] listaCheques(List<MovimientoCuentaBancaria> listaMovimientoCuentaBancaria){
    	SelectItem[] lista = null;
        int i = 1;
        if (listaMovimientoCuentaBancaria != null && listaMovimientoCuentaBancaria.size() != 0) {
            if(listaMovimientoCuentaBancaria.size()>1){
	        	lista = new SelectItem[listaMovimientoCuentaBancaria.size()+1];
	        	lista[0] = new SelectItem(0,"Seleccione");
        	}else{
        		lista = new SelectItem[listaMovimientoCuentaBancaria.size()];
        		i=0;
        	}    
            for (MovimientoCuentaBancaria objMovimientoCuentaBancaria : listaMovimientoCuentaBancaria) {
                lista[i] = new SelectItem(objMovimientoCuentaBancaria.getId(), objMovimientoCuentaBancaria.getNumFormaMovimiento());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
    
    public static SelectItem[] listaTipoMonedaFormulario(List<TipoMoneda> listaTipoMoneda) {
        SelectItem[] lista = null;
        int i = 1;
        if (listaTipoMoneda != null && listaTipoMoneda.size() != 0) {
        	if(listaTipoMoneda.size()>1){
        		lista = new SelectItem[listaTipoMoneda.size()+1];
	        	lista[0] = new SelectItem(0,"Seleccione");
        	}else{
        		lista = new SelectItem[listaTipoMoneda.size()];
        		i=0;
        	}
            for (TipoMoneda objTipoMoneda : listaTipoMoneda) {
                lista[i] = new SelectItem(objTipoMoneda.getId(), objTipoMoneda.getNombre());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
    
    public static SelectItem[] listaTipoMovimientoFormulario(List<ParametroDetalle> listaParametroDetalle) {
            SelectItem[] lista = null;
            int i = 1;
            if (listaParametroDetalle != null && listaParametroDetalle.size() != 0) {
                if(listaParametroDetalle.size()>1){
    	        	lista = new SelectItem[listaParametroDetalle.size()+1];
    	        	lista[0] = new SelectItem(0,"Seleccione");
            	}else{
            		lista = new SelectItem[listaParametroDetalle.size()];
            		i=0;
            	}    
                for (ParametroDetalle objParametroDetalle : listaParametroDetalle) {
                    lista[i] = new SelectItem(objParametroDetalle.getValCadena().trim(), objParametroDetalle.getDesParametroDet());
                    i++;
                }
            }else{
            	lista = new SelectItem[1];
            	lista[0] = new SelectItem(-2,"No existe informacion");
            }
            return lista;
        }
    
    
    public static SelectItem[] listaFormaMovimientoFormulario(List<ParametroDetalle> listaParametroDetalle) {
        SelectItem[] lista = null;
        int i = 1;
        if (listaParametroDetalle != null && listaParametroDetalle.size() != 0) {
            if(listaParametroDetalle.size()>1){
	        	lista = new SelectItem[listaParametroDetalle.size()+1];
	        	lista[0] = new SelectItem(0,"Seleccione");
        	}else{
        		lista = new SelectItem[listaParametroDetalle.size()];
        		i=0;
        	}    
            for (ParametroDetalle objParametroDetalle : listaParametroDetalle) {
                lista[i] = new SelectItem(objParametroDetalle.getValCadena().trim(), objParametroDetalle.getDesParametroDet());
                i++;
            }
        }else{
        	lista = new SelectItem[1];
        	lista[0] = new SelectItem(-2,"No existe informacion");
        }
        return lista;
    }
 
}
